#ifndef CMARCOREGLU_H
#define CMARCOREGLU_H

/*
class holds methods to help pass data between
different libraries e.g. bullet, irrlicht, openal
*/

#include "CTetraVertex.h"
#include "CTetra.h"

/*
using namespace irr;
using namespace MarCore;
*/

namespace MarCore
{


class CMCGlu : public irr::IReferenceCounted
{

public:

    ///@note CMCGlu handles, manages etc at nearly all levels of abstraction.
    /// while it does not simulate at the lowest level or does not handles
    /// specific functions of the engine, it handles and makes possible
    /// smooth, easy conversion and transfer of data between different
    /// libraries.

    //! Constructor
    CMCGlu(); //c

    //! Destructor
    ~CMCGlu(); //c

    ///@note CTetraVertex level

    //! Converts a CTetraVertex to S3DVertex used in graphics rendering by irrlicht.
    irr::video::S3DVertex createS3DVertexFromCTetraVertex( CTetraVertex* vertex ); //c

    //! Takes a Tetra, creates an irrTetraNode and spits a pointer to it.
    irr::scene::ISceneNode* createGraphicsExternal( IGameObject3d* game_obj ); //c

    //!
    //! Takes a Tetra, creates objects needed for physics simulation, returns needed pointers.
    //btRigidBody* createPhysicsExternal( IGameObject3d* game_obj ); //c

    //!
    //! Convert vector3df to btVector3.
    //btVector3 btVector3FromVector3df( core::vector3df& vec ); //c

    //! This group of functions is used to convert values used by different external libraries such as !//
    //! bullet physics, irrlicht graphic and openal sound !//

    //!
    //! vector3df to btVector3
    //btVector3 basicTypeConvert( core::vector3df& vec );

    //!
    //! btVector3 to vector3df
    //vector3df basicTypeConvert( btVector3& vec );

    // Sound body

    // Network interface buffer

}; //end class CMCGlu

}; //end namespace MarCore

#endif
